home *** CD-ROM | disk | FTP | other *** search
- //DSFuncs.cpp
-
- #include "DSFuncs.h"
-
- ////////////////////////////////////////////////////
- //LPDSB Functions
- ////////////////////////////////////////////////////
-
- LPDIRECTSOUNDBUFFER LPDSB_LoadFromFile(LPDIRECTSOUND lpds,LPCTSTR lpszFileName)
- {
- //declare buffer pointer
- LPDIRECTSOUNDBUFFER lpdsb=NULL;
-
- //load wav file
- CWAVLoader wav;
- wav.Load(lpszFileName);
-
- //set up buffer description
- DSBUFFERDESC dsbd;
- memset(&dsbd,0,sizeof(DSBUFFERDESC));
-
- //size
- dsbd.dwSize=sizeof(DSBUFFERDESC);
-
- //flags
- dsbd.dwFlags=DSBCAPS_LOCSOFTWARE;
-
- //length and sound format
- dsbd.dwBufferBytes=wav.GetLength();
- dsbd.lpwfxFormat=wav.GetFormat();
-
- //create buffer
- lpds->CreateSoundBuffer(&dsbd,&lpdsb,NULL);
-
- DWORD buflen,buflen2;
- void* bufptr;
-
- //lock entire buffer
- lpdsb->Lock(0,0,&bufptr,&buflen,NULL,&buflen2,DSBLOCK_ENTIREBUFFER);
-
- //copy from wave loader to sound buffer
- memcpy(bufptr,wav.GetData(),wav.GetLength());
-
- //unlock the buffer
- lpdsb->Unlock(bufptr,buflen,NULL,buflen2);
-
- //return the new buffer
- return(lpdsb);
- }
-
- void LPDSB_Release(LPDIRECTSOUNDBUFFER* lplpdsb)
- {
- //safe release
- if(*lplpdsb)
- {
- (*lplpdsb)->Release();
- (*lplpdsb)=NULL;
- }
- }